package com.dstz.form.util.tableexcel.column;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dstz.base.core.util.StringUtil;
import com.dstz.bus.api.constant.BusColumnCtrlType;
import com.dstz.bus.api.model.IBusinessColumn;

/**
 * <pre>
 * 业务表excel字段相关
 * </pre>
 * 
 * @author aschs
 * @date 2019年9月9日
 * @owner 大世同舟
 */
public abstract class BusinessColumnExcellor {

	/**
	 * <pre>
	 * 负责的控件类型
	 * </pre>
	 * 
	 * @return
	 */
	abstract BusColumnCtrlType getCtrlType();

	/**
	 * <pre>
	 * 从excel的内容转到业务表的内容
	 * </pre>
	 * 
	 * @param text
	 * @return
	 */
	public Object fromExcel(IBusinessColumn column, Object text) {
		if (text == null) {
			return null;
		}

		if (column.getCtrl() == null || StringUtil.isEmpty(column.getCtrl().getConfig())) {
			return text;
		}
		JSONObject config = JSON.parseObject(column.getCtrl().getConfig());
		return fromExcel(column, text, config);
	}

	abstract Object fromExcel(IBusinessColumn column, Object text, JSONObject config);

	/**
	 * <pre>
	 * 从业务表的内容 转到excel的内容
	 * </pre>
	 * 
	 * @param text
	 * @return
	 */
	public Object toExcel(IBusinessColumn column, Object value) {
		if (value == null) {
			return null;
		}

		if (column.getCtrl() == null || StringUtil.isEmpty(column.getCtrl().getConfig())) {
			return value;
		}
		JSONObject config = JSON.parseObject(column.getCtrl().getConfig());
		return toExcel(column, value, config);
	}

	abstract Object toExcel(IBusinessColumn column, Object value, JSONObject config);
}
